//package com.foreveross.bsl.monitor.web;
//
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Calendar;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.HashSet;
//import java.util.Iterator;
//import java.util.LinkedHashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//import javax.inject.Inject;
//import org.apache.log4j.Logger;
//import org.csair.monitor.application.MonitorApplication;
//import org.csair.monitor.application.vo.MonitorVO;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import com.foreveross.bsl.mam.app.application.AppMainApplication;
//import com.foreveross.bsl.mam.app.application.vo.AppMainVo;
//import com.foreveross.bsl.web.BaseController;
//import org.csair.monitor.application.vo.Type;
//
///**
// * 
// * @author lizhifeng
// * 
// */
//@RequestMapping("/plot")
//@Controller
//public class PlotController extends BaseController
//{
//	@Inject
//	private MonitorApplication monitorApplication;
//	@Inject
//	private AppMainApplication appMainApplication;
//
//	private Map<String, Object> _map = null;
//	private Logger log = Logger.getLogger(this.getClass());
//
//	@RequestMapping("/plot-index/{appId}/{type}")
//	public String toPlotPage(Model model, @PathVariable("appId") String appId, @PathVariable("type") String type)
//	{
//		AppMainVo appMainVo = appMainApplication.getEntity(appId);
//		model.addAttribute("appMainVo", appMainVo);
//		Type plotType = Type.valueOf(type.toUpperCase());
//		List<Type> types = new ArrayList<Type>();
//
//		switch (plotType)
//		{
//		case MONTH:
//			model.addAttribute("currentType", "过去十二个月下载统计");
//			types.add(Type.HOUR);
//			types.add(Type.DAY);
//			break;
//		case DAY:
//			model.addAttribute("currentType", "过去30天下载统计");
//			types.add(Type.HOUR);
//			types.add(Type.MONTH);
//			break;
//		default:
//			model.addAttribute("currentType", "过去24小时的统计");
//			types.add(Type.MONTH);
//			types.add(Type.DAY);
//			break;
//		}
//		model.addAttribute("type", type);
//		model.addAttribute("types", types);
//		return "monitor/showPlot";
//	}
//
//	@ResponseBody
//	@RequestMapping("/show/{appId}/{type}")
//	public Map<String, Object> showPlot(Model model, @PathVariable("appId") String appId, @PathVariable("type") String type)
//	{
//		_map = new HashMap<String, Object>();
//		AppMainVo appMainVo = appMainApplication.getEntity(appId);
//		List<MonitorVO> mVos = monitorApplication.getPlotMonitors(appMainVo.getIdentifier(), type);
//		sumMonitors(mVos, type);
//		_map.put("type", type.toLowerCase());
//		log.info("json数据：" + _map);
//
//		return _map;
//	}
//
//	/**
//	 * 
//	 * 获取需要统计的所有平台，android，ios，winform etc。
//	 * 
//	 * @param mVos
//	 * @return
//	 */
//	public Set<String> getPlatForms(List<MonitorVO> mVos)
//	{
//		Set<String> platforms = new HashSet<String>();
//		for (MonitorVO monitorVO : mVos)
//		{
//			if (!platforms.contains(monitorVO.getPlatformId()))
//			{
//				platforms.add(monitorVO.getPlatformId());
//			}
//		}
//		//当日志表记录为空时初始化平台
//		if(platforms.size()==0)
//		{
//			platforms.add("android");
//			platforms.add("ios");
//		}
//		_map.put("label", platforms);
//		return platforms;
//	}
//
//	/**
//	 * 获取统计数据的最大值
//	 * 
//	 * @param maps
//	 */
//	public void getMaxSize(Map<String, Map<String, Integer>> maps)
//	{
//		int maxSize = 0;
//		Iterator<String> it = maps.keySet().iterator();
//		while (it.hasNext())
//		{
//			Map<String, Integer> map = maps.get(it.next());
//			for (String key : map.keySet())
//			{
//				int size = map.get(key);
//				if (size > maxSize)
//				{
//					maxSize = size;
//				}
//			}
//
//		}
//
//		_map.put("max", maxSize);
//
//	}
//
//	public void sumMonitors(List<MonitorVO> mVos, String type)
//	{
//		Set<String> platforms = getPlatForms(mVos);
//		Map<String, Map<String, Integer>> maps = new LinkedHashMap<String, Map<String, Integer>>();
//		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		for (String platform : platforms)
//		{
//			Map<String, Integer> newMap = initMap(type);
//
//			for (MonitorVO monitorVO : mVos)
//			{
//				if (!platform.equals(monitorVO.getPlatformId()))
//				{
//					continue;
//				}
//				String date = "";
//				Type plotType = Type.valueOf(type.toUpperCase());
//				switch (plotType)
//				{
//				case MONTH:
//					date = sf.format(monitorVO.getMonitorDate()).substring(0, 7)+"-01";
//					break;
//				case DAY:
//					date = sf.format(monitorVO.getMonitorDate()).substring(0, 10);
//					break;
//
//				default:
//					date = sf.format(monitorVO.getMonitorDate()).substring(0, 13);
//					break;
//				}
//
//				if (newMap.containsKey(date))
//				{
//					int num = newMap.get(date) + 1;
//					newMap.put(date, num);
//				}
//				else
//				{
//					newMap.put(date, 1);
//				}
//			}
//			maps.put(platform, newMap);
//
//		}
//		_map.put("monitor", maps);
//		getMaxSize(maps);
//		return;
//	}
//
//	public Map<String, Integer> initMap(String type)
//	{
//		Map<String, Integer> map = new LinkedHashMap<String, Integer>();
//		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 制定日期格式
//		Calendar c = Calendar.getInstance();
//		Date date = new Date();
//		String beginDate = "";
//		c.setTime(date);
//		Type plotType = Type.valueOf(type.toUpperCase());
//		switch (plotType)
//		{
//		case MONTH:
//			map.put(sf.format(date).substring(0, 7) + "-01", 0);// 当天下载次数初始化
//			c.add(Calendar.MONTH, -12); // 过去十二个月的时间
//			beginDate = sf.format(c.getTime());
//			for (int i = 0; i < 12; i++)
//			{
//				String nextDate = getNextDate(beginDate, type);
//				String key = beginDate.substring(0, 7) + "-01";
//				map.put(key, 0);
//				beginDate = nextDate;
//			}
//
//			break;
//		case DAY:
//			map.put(sf.format(date).substring(0, 10), 0);// 当天下载次数初始化
//			c.add(Calendar.DATE, -30);
//			beginDate = sf.format(c.getTime());
//			for (int i = 0; i < 30; i++)
//			{
//				String nextDate = getNextDate(beginDate, type);
//				String key = beginDate.substring(0, 10);
//				map.put(key, 0);
//				beginDate = nextDate;
//			}
//			break;
//
//		default:
//			map.put(sf.format(date).substring(0, 13), 0);// 当天下载次数初始化
//			c.add(Calendar.HOUR, -24);
//			beginDate = sf.format(c.getTime());
//			for (int i = 0; i < 24; i++)
//			{
//				String nextDate = getNextDate(beginDate, type);
//				String key = beginDate.substring(0, 13);
//				map.put(key, 0);
//				beginDate = nextDate;
//			}
//			break;
//		}
//
//		return map;
//	}
//
//	/**
//	 * 根据类型不同，给当前时间加一个月，一个小时，一天
//	 * 
//	 * @param nowDate
//	 * @param type
//	 * @return
//	 */
//	public String getNextDate(String nowDate, String type)
//	{
//		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 制定日期格式
//		Calendar c = Calendar.getInstance();
//		Date date = new Date();
//		try
//		{
//			date = df.parse(nowDate);
//		}
//		catch (ParseException e)
//		{
//			log.error("Date parse faile::" + e);
//		}
//		c.setTime(date);
//		Type plotType = Type.valueOf(type.toUpperCase());
//		switch (plotType)
//		{
//		case MONTH:
//			c.add(Calendar.MONTH, 1); // 将当前日期加一个月
//			break;
//		case DAY:
//			c.add(Calendar.DATE, 1); // 将当前日期加一天
//			break;
//		default:
//			c.add(Calendar.HOUR, 1); // 将当前日期加一小时
//			break;
//		}
//		String lastDate = df.format(c.getTime()); // 返回String型的时间
//		return lastDate;
//	}
//
//	@Override
//	protected String getModuleMenuName()
//	{
//		return "云服务";
//	}
//
//}
